package slice

import "gitee.com/ekit/internal/errs"

func Add[T any](src []T, element T, index int) ([]T, error) {
	// 1.查看index 是否发生越界行为
	length := len(src)

	if index < 0 || index > length {
		return nil, errs.NewErrIndexOutOfRange(length, index)
	}

	// 2.先声明一个src的扩展元素， 循环遍历切片，
	// 寻找到index的位置, 将index位置之后的元素， 向后平移
	var newSlice T
	src = append(src, newSlice)
	for i := length - 1; i > index; i-- {
		if i-1 >= 0 {
			src[i] = src[i-1]
		}
	}
	src[index] = element
	return src, nil
}
